{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![open.svg](images/open.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MLP实现股价预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 逻辑回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用于解决分类问题的一种模型。根据数据特征或属性，计算其归属于某一类别的概率P(x)，根据概率数值判断其所属类别。\n",
    "- 主要应用场景：二分类问题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 逻辑回归数学表达式\n",
    "\n",
    "![logistic_regression formula](images/06_logistic_regression_formula.png)\n",
    "\n",
    "其中，y为类别结果，P为概率，x为特征值，a、b为常量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型评估回顾\n",
    "\n",
    "- 目的：通过模型评估对比模型表现、确定合适的模型参数（组）\n",
    "- 方法：计算测试数据集预测准确率以评估模型表现"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 皮马印第安人糖尿病数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "基于数据集中包括的某些诊断测量来诊断性地预测患者是否患有糖尿病\n",
    "\n",
    "输入变量包括：独立变量包括患者的怀孕次数，葡萄糖量，血压，皮褶厚度，体重指数，胰岛素水平，糖尿病谱系功能，年龄\n",
    "\n",
    "输出结果：是否患有糖尿病\n",
    "\n",
    "数据来源：[Pima Indians Diabetes dataset](https://www.kaggle.com/uciml/pima-indians-diabetes-database)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**任务:** 通过怀孕次数、胰岛素水平、体重指数、年龄四个特征预测是否患有糖尿病"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 典型的逻辑回归概率分布曲线\n",
    "\n",
    "![unrolled_RNN](images/unrolled_RNN.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 基于t时刻及之前数据预测t+1时刻结果（滑动窗口预测）\n",
    "\n",
    "![sliding_window_time_series.svg](images/sliding_window_time_series.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# train LSTM on five years of Google \n",
    "# Supervised Deep Learning\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "\n",
    "# Importing the training set\n",
    "training_set_ori = pd.read_csv(\"zgpa_2016-18.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2016-01-04</td>\n",
       "      <td>30.57</td>\n",
       "      <td>30.57</td>\n",
       "      <td>28.63</td>\n",
       "      <td>28.78</td>\n",
       "      <td>70997200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2016-01-05</td>\n",
       "      <td>28.41</td>\n",
       "      <td>29.54</td>\n",
       "      <td>28.23</td>\n",
       "      <td>29.23</td>\n",
       "      <td>87498504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2016-01-06</td>\n",
       "      <td>29.03</td>\n",
       "      <td>29.39</td>\n",
       "      <td>28.73</td>\n",
       "      <td>29.26</td>\n",
       "      <td>48012112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2016-01-07</td>\n",
       "      <td>28.73</td>\n",
       "      <td>29.25</td>\n",
       "      <td>27.73</td>\n",
       "      <td>28.50</td>\n",
       "      <td>23647604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2016-01-08</td>\n",
       "      <td>28.73</td>\n",
       "      <td>29.18</td>\n",
       "      <td>27.63</td>\n",
       "      <td>28.67</td>\n",
       "      <td>98239664</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         date   open   high    low  close    volume\n",
       "0  2016-01-04  30.57  30.57  28.63  28.78  70997200\n",
       "1  2016-01-05  28.41  29.54  28.23  29.23  87498504\n",
       "2  2016-01-06  29.03  29.39  28.73  29.26  48012112\n",
       "3  2016-01-07  28.73  29.25  27.73  28.50  23647604\n",
       "4  2016-01-08  28.73  29.18  27.63  28.67  98239664"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_set_ori.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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r79GVTn22GP55JNPGDBgAKNHjyYnJ4fNmzfTp08fTjrpJHJzcyO+bo8ePWjVqhXt27dn4MCBnHjiiRxzzDGcfPLJPPzww9x7773k5+fz22+/cc455zBx4kQ6derE0KFDeeyxx7j44os59dRTeemll+jTpw/r168nKyvr99cfP348I0eO5N1336V58+ZRf78FCxawYMECOnToAMC0adOYMmUKWVlZTJ48+ffrbr/9dpo2bcqsWbMAWLNmDatWreIf//gHH374IY0aNeLuu+9m5MiR/O1vf6vQ39ZUw4ABbmur7JkS0iPxJ8jmzZvp2bMnCxcupHfv3gwaNAhwiX/ChAn06tULcC3hefPmMWDAAB566CHGjx8PwOLFi5k3b17UxF+7dm3ef/99pk6dysSJE7nqqquYNm0at956a9h1c+fOpX379nTq1AmAYcOG8cgjjzBw4EBat25Nnz59AGjSpMnvz5k0aRIFBQVMmDAh7HzQSy+9xJQpU6hfvz6PP/44OTlu+dljjz027APE8+GHH/Liiy/+fty8eXPefvttZs+ezQEHHADA1q1b6d+/f9l/WJM8tm8P369jKSMdpMe/YgVb5rHm9fGvW7eOwYMH88gjj3D55Zejqlx//fVccMEFYddPnjyZDz/8kC+++IKGDRty8MEHlzt/XUTo27cvffv2ZdCgQQwfPrxU4o+2brKqRp0q+Yc//IEFCxbw448/kp+fH/GaU089lYcffrjU+UaNGlX4/VSVQYMGMW7cuIjPMUlu82Z/f906iNJIManF+vhjoGnTpjz00EPce++9bNu2jSOOOILRo0f/3pf966+/smLFCtatW0fz5s1p2LAhc+bM4csvvyzzdZcsWcL06dN/P54xYwZt27YFIDs7+/f++i5durBw4UJ++uknAJ577jkOOuggunTpwpIlS5g6dSoAGzZsYHuoBde2bVtee+01hg4dyvfffx+Tv8Phhx8e9kGxZs0a+vXrx2efffZ7bJs2beLHH3+MyfuZOFu1CoLfBoMfAialWeKPkV69etGjRw9efPFFDj/8cM444wz69+9Pt27dOPnkk9mwYQNHHnkk27dvp3v37tx8883069evzNfctm0bV199NV26dKFnz5689NJLPPjggwCcc845XHjhhfTs2RNV5emnn2bIkCF069aNWrVqceGFF1KvXj1eeuklLrvs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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualising the results\n",
    "%matplotlib inline\n",
    "plt.plot(training_set_ori.loc[:,['open']], color = 'red', label = 'Real Stock Price')\n",
    "plt.title('Stock Price')\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('Price')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(731, 1) <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "# input/ouputs of recurrent neural (input != date, stock price)\n",
    "# but stock price at time t for input, and stock price t+1 for the output\n",
    "# create a set only with the \"Open\" Google stock price, extract that column\n",
    "# two-dimensional numpy array\n",
    "training_set_ori = training_set_ori.loc[:,['open']].values\n",
    "print(training_set_ori.shape,type(training_set_ori))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Feature Scaling + Normalization, since LSTM Several Sigmoid Activation function\n",
    "# Sigmoid 0 and 1, as is the case in Normalization\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "sc = MinMaxScaler() # default is 0,1\n",
    "# Fitting to training_set, scale training set, \n",
    "# transform we'll apply normalizationjust need min and max for normalization\n",
    "training_set = sc.fit_transform(training_set_ori)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(731, 1) <class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "source": [
    "print(training_set.shape,type(training_set))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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GzeOoUOH8qb3n3LevHl88MEHlC9fnpEjR/LLL7/w8ccfM2fOHLp3787rr7/Offfdx4ABA3j33Xc57bTTGDJkCLfeeisAAwcO5J133uGUU06JKlP//v3p378/AGeddRa9evVi+/btXH311bz11ls0bNiQl19+mVtuuYVx48Zx8cUX88gjj9CrVy9uuOGGqNc866yzOPLII/n888/p3bs3559/Pocccgj33HMPjz76KDO833/69OmMHz+eb775Bucchx12GL169aJSpUrcfffdfPnllzRo0IC1EQ+VG2+8kfz8fMaPHx93wvbtt9+mffv2u/fXr1/Pp59+ChDmljvvvPMYPnw4AwYMYOvWrezatYvJkyczf/58vv32W5xz9O/fn88++4yePXvGvF+Z5pBDID8fklWR8PffIUOtc2PPSZkiEJEXgaOBBiKSB9wGVARwzo1BC5ufCCwANqO1UMs0tWrV4oILLmD06NFUrRqqHT5lyhQmTJgA6IM7qCjOPPNMypcvv3u/X79+VKxYkfbt27Nz50769tXAq/bt27No0SIAPv74Y+677z42b97M2rVrOfjgg2MqAp/77ruPqlWrctVVVzF79mxmz57NcccdB8DOnTtp3Lgx+fn5rF+/nl69eu2W9b333it0raZNm/Lzzz/z0Ucf8dFHH9G7d29effVVevfuHTbuiy++YMCAAVSvrmWMTz/9dD7//HNEhDPOOIMGDRoAUK9evd3n3HnnnRx22GE8+eSTMb/LDTfcwF133UXDhg0ZO3bs7v4///nPhcZu3LiRZcuWMWDAAEAXiQFMnjyZyZMnc8ghhwBQUFDA/Pnzs1cR5Odru3MnBP7eis3KlSW/hpExpEwROOfOKeK4QwuBJ5cE3txTybBhw+jcuTMXXxxbrwXfcv2HpE/lypUBKFeuHBUrVtw9tly5cuzYsYOtW7dy5ZVXMm3aNJo1a8bIkSOLjHX/8MMPefXVV/nss88AXSx18MEHF5poXb9+fcIhk5UrV6Zfv37069ePRo0a8eabbxZSBLHqYTvnYt6na9euTJ8+nbVr14YpiCCjRo3ijDPOKNQf+VsWJcOIESOizjFkNZs2Qa1axT+/fHlVJuvWJU8mI+1YrqEkU69ePc4666ywN9UePXrw0ksvAfD8889z5JFHFvv6/kO/QYMGFBQUFBlls3jxYq688kpeeeWV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yD0sxYSRfJyDq66Cb74J9TVqBH36JOf6y5fDkiVFj9u1S2Vo2RL23z88jxDAokXaHngg/O1v8O9/J0c+wyhjmCIwks/ChfD443D44frW/dNPsHkzfPFFyZXB2rVw8MHQtq1O8sZi1SpNE3H44bq9bBk8+2z4mMWLoXFjtRTuuAMuM+PUyE1MERjJ5/vvQ9uHHQbXXhva//DDxK/zzTea6mHqVNiyBf7xD91fv17dPb16wZQpaoFEcsMNMG2abrdpo7UFHntMz/OZPx9atNijr2YY2YgpAiO5LFkCZ5wR2ncO3nsPLroIbrlF+4IP40j++APefhuqVtW3+S++gPHjoXdvuPlmmDNHxz31lLqIevSAt94Knf/pp/DGG3oewNKlapE89phaEC+8EOqfMgWOPDJpX90wyiqWfdRILmPHhrYXLw6FY15+eeghvmoVVK8e/fwnnoBhwwr3icDQoWoF7LefTu42awYnnACDB8OsWfDBB/DZZ6HznnsuNPl70klqFQwerJ/WrbU4/XnnJed7G0YZxiwCI7l89522X3+tD94HH4SvvtK3+7320mO//x4av3q1+vzr1lXF8fnnmvzt009h505d6AUwfTo8/LCGd/oRPscfD8cco4rl1lvDlcBf/xr+kBdRq8Rn3jy45hroaAlvDUNcNP9qBtOlSxc3zff97gmLFunD5bTToHbtpMtVpnn3XXjgAfjvfzXEsyS0batROBMmFD42dSp066bbGzZAzZpw5536EA9y/vmhid05c3ROIFaRmDVrdCJ4yhT45z/hnXd0svrYYwt/lx079O/g9dd1/mDsWCtQb+QMIjI95jot51yZ+hx66KGuWLzyinPg3MyZxTs/W/nuO/1dwLnJk51bu9a5555zbv36os/dudO522937t//dm7xYuc+/VSvc911sccPGqRj3nnHuUMO0e2jjnJu3LiQHG++mdzvaBiGA6a5GM/V3JkjqFlT240b0ytHunFOI3B8l4s/eQrqavG55JJwf38kL70E55wT/VirVtH7y5WD++7TeP1hw3Ty9vDD1RKpVg3at4eVK6Ffvz37ToZhlIjcUQS+C2DDhvTKkS6uuUYnTD/+GO65R+P6162D++/XYiwVK8K334bGf/KJhldecIFG7Rx4oCqRm2/Wh7bvzunQQf3xq1bpg3zrVp3AjUWdOhoC+vnnuv/xx1Cl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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(training_set, color = 'red', label = 'Normalized Stock Price')\n",
    "plt.title('Normalized Stock Price')\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('Normalized Price')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Getting the inputs and the outputs, y_train is output, x_train is the input\n",
    "m = training_set.shape[0]\n",
    "X_train = training_set[0:m-1]\n",
    "y_train = training_set[1:m]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(730, 1)\n"
     ]
    }
   ],
   "source": [
    "print(X_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reshaping inputs, input has a certain format (2D array, features)\n",
    "# Changing the format of X_train into a 3D array, with a timestep\n",
    "# Keras Documentation - why reshape? - 3D tensor with shape (batch_size, timesteps)\n",
    "# time steps different between output and input time, input_dim dimension of input feature\n",
    "X_train = np.reshape(X_train, (m-1, 1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Part 2 - Building the RNN\n",
    "\n",
    "# Importing the keras libs and packages\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "\n",
    "# Initialising the RNN\n",
    "# predicting a continuous outcome, regression model\n",
    "regressor = Sequential()\n",
    "\n",
    "# Adding the input layer and the LSTM layer\n",
    "regressor.add(LSTM(units = 4, activation = 'sigmoid', input_shape = (None, 1)))\n",
    "\n",
    "# Adding the output layer\n",
    "regressor.add(Dense(units = 1, activation = 'linear'))\n",
    "\n",
    "# Compiling the RNN\n",
    "# use the mean square error\n",
    "# regression won't be binary cross entropy, MSE for regression\n",
    "regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.layers import RNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "730/730 [==============================] - 1s 699us/step - loss: 0.1000\n",
      "Epoch 2/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 0.0952\n",
      "Epoch 3/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 0.0927\n",
      "Epoch 4/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 0.0907\n",
      "Epoch 5/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 0.0888\n",
      "Epoch 6/200\n",
      "730/730 [==============================] - 0s 65us/step - loss: 0.0870\n",
      "Epoch 7/200\n",
      "730/730 [==============================] - 0s 131us/step - loss: 0.0852\n",
      "Epoch 8/200\n",
      "730/730 [==============================] - 0s 107us/step - loss: 0.0835\n",
      "Epoch 9/200\n",
      "730/730 [==============================] - 0s 101us/step - loss: 0.0817\n",
      "Epoch 10/200\n",
      "730/730 [==============================] - 0s 120us/step - loss: 0.0799\n",
      "Epoch 11/200\n",
      "730/730 [==============================] - 0s 112us/step - loss: 0.0781\n",
      "Epoch 12/200\n",
      "730/730 [==============================] - 0s 104us/step - loss: 0.0763\n",
      "Epoch 13/200\n",
      "730/730 [==============================] - 0s 90us/step - loss: 0.0745\n",
      "Epoch 14/200\n",
      "730/730 [==============================] - 0s 93us/step - loss: 0.0728\n",
      "Epoch 15/200\n",
      "730/730 [==============================] - 0s 103us/step - loss: 0.0708\n",
      "Epoch 16/200\n",
      "730/730 [==============================] - 0s 100us/step - loss: 0.0689\n",
      "Epoch 17/200\n",
      "730/730 [==============================] - 0s 89us/step - loss: 0.0671\n",
      "Epoch 18/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 0.0652\n",
      "Epoch 19/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 0.0632\n",
      "Epoch 20/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 0.0613\n",
      "Epoch 21/200\n",
      "730/730 [==============================] - 0s 85us/step - loss: 0.0595\n",
      "Epoch 22/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 0.0574\n",
      "Epoch 23/200\n",
      "730/730 [==============================] - 0s 83us/step - loss: 0.0554\n",
      "Epoch 24/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 0.0534\n",
      "Epoch 25/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 0.0514\n",
      "Epoch 26/200\n",
      "730/730 [==============================] - 0s 65us/step - loss: 0.0494\n",
      "Epoch 27/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 0.0474\n",
      "Epoch 28/200\n",
      "730/730 [==============================] - 0s 80us/step - loss: 0.0453\n",
      "Epoch 29/200\n",
      "730/730 [==============================] - 0s 55us/step - loss: 0.0432\n",
      "Epoch 30/200\n",
      "730/730 [==============================] - 0s 203us/step - loss: 0.0412 0s - loss: 0.040\n",
      "Epoch 31/200\n",
      "730/730 [==============================] - 0s 121us/step - loss: 0.0392\n",
      "Epoch 32/200\n",
      "730/730 [==============================] - 0s 99us/step - loss: 0.0373\n",
      "Epoch 33/200\n",
      "730/730 [==============================] - 0s 93us/step - loss: 0.0353\n",
      "Epoch 34/200\n",
      "730/730 [==============================] - 0s 94us/step - loss: 0.0334\n",
      "Epoch 35/200\n",
      "730/730 [==============================] - 0s 57us/step - loss: 0.0315\n",
      "Epoch 36/200\n",
      "730/730 [==============================] - 0s 82us/step - loss: 0.0296\n",
      "Epoch 37/200\n",
      "730/730 [==============================] - 0s 88us/step - loss: 0.0278\n",
      "Epoch 38/200\n",
      "730/730 [==============================] - 0s 78us/step - loss: 0.0260\n",
      "Epoch 39/200\n",
      "730/730 [==============================] - 0s 85us/step - loss: 0.0243\n",
      "Epoch 40/200\n",
      "730/730 [==============================] - ETA: 0s - loss: 0.022 - 0s 88us/step - loss: 0.0226\n",
      "Epoch 41/200\n",
      "730/730 [==============================] - 0s 81us/step - loss: 0.0210\n",
      "Epoch 42/200\n",
      "730/730 [==============================] - 0s 81us/step - loss: 0.0194\n",
      "Epoch 43/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 0.0179\n",
      "Epoch 44/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 0.0165\n",
      "Epoch 45/200\n",
      "730/730 [==============================] - 0s 77us/step - loss: 0.0152\n",
      "Epoch 46/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 0.0139\n",
      "Epoch 47/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 0.0127\n",
      "Epoch 48/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 0.0115\n",
      "Epoch 49/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 0.0104\n",
      "Epoch 50/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 0.0094\n",
      "Epoch 51/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 0.0085\n",
      "Epoch 52/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 0.0077\n",
      "Epoch 53/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 0.0069\n",
      "Epoch 54/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 0.0062\n",
      "Epoch 55/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 0.0055\n",
      "Epoch 56/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 0.0049\n",
      "Epoch 57/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 0.0043\n",
      "Epoch 58/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 0.0038\n",
      "Epoch 59/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 0.0034\n",
      "Epoch 60/200\n",
      "730/730 [==============================] - 0s 79us/step - loss: 0.0030\n",
      "Epoch 61/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 0.0026\n",
      "Epoch 62/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 0.0023\n",
      "Epoch 63/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 0.0020\n",
      "Epoch 64/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 0.0018\n",
      "Epoch 65/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 0.0016\n",
      "Epoch 66/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 0.0014\n",
      "Epoch 67/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 0.0012\n",
      "Epoch 68/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 0.0011\n",
      "Epoch 69/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 9.8401e-04\n",
      "Epoch 70/200\n",
      "730/730 [==============================] - 0s 52us/step - loss: 8.8138e-04\n",
      "Epoch 71/200\n",
      "730/730 [==============================] - 0s 80us/step - loss: 7.9698e-04\n",
      "Epoch 72/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 7.2491e-04\n",
      "Epoch 73/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 6.6575e-04\n",
      "Epoch 74/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 6.1007e-04\n",
      "Epoch 75/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 5.6745e-04\n",
      "Epoch 76/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 5.3286e-04\n",
      "Epoch 77/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 5.0283e-04\n",
      "Epoch 78/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 4.7805e-04\n",
      "Epoch 79/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 4.5637e-04\n",
      "Epoch 80/200\n",
      "730/730 [==============================] - 0s 77us/step - loss: 4.3876e-04\n",
      "Epoch 81/200\n",
      "730/730 [==============================] - 0s 56us/step - loss: 4.2618e-04\n",
      "Epoch 82/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 4.1501e-04\n",
      "Epoch 83/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 4.0595e-04\n",
      "Epoch 84/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.9981e-04\n",
      "Epoch 85/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.9309e-04\n",
      "Epoch 86/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.8857e-04\n",
      "Epoch 87/200\n",
      "730/730 [==============================] - 0s 82us/step - loss: 3.8588e-04\n",
      "Epoch 88/200\n",
      "730/730 [==============================] - 0s 69us/step - loss: 3.8324e-04\n",
      "Epoch 89/200\n",
      "730/730 [==============================] - 0s 54us/step - loss: 3.8087e-04\n",
      "Epoch 90/200\n",
      "730/730 [==============================] - 0s 79us/step - loss: 3.7795e-04\n",
      "Epoch 91/200\n",
      "730/730 [==============================] - 0s 55us/step - loss: 3.7723e-04\n",
      "Epoch 92/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.7717e-04\n",
      "Epoch 93/200\n",
      "730/730 [==============================] - 0s 60us/step - loss: 3.7450e-04\n",
      "Epoch 94/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7389e-04\n",
      "Epoch 95/200\n",
      "730/730 [==============================] - 0s 65us/step - loss: 3.7353e-04\n",
      "Epoch 96/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "730/730 [==============================] - 0s 64us/step - loss: 3.7328e-04\n",
      "Epoch 97/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7277e-04\n",
      "Epoch 98/200\n",
      "730/730 [==============================] - 0s 51us/step - loss: 3.7273e-04\n",
      "Epoch 99/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7313e-04\n",
      "Epoch 100/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7254e-04\n",
      "Epoch 101/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 3.7188e-04\n",
      "Epoch 102/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7268e-04\n",
      "Epoch 103/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 3.7451e-04\n",
      "Epoch 104/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7216e-04\n",
      "Epoch 105/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7309e-04\n",
      "Epoch 106/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7147e-04\n",
      "Epoch 107/200\n",
      "730/730 [==============================] - 0s 84us/step - loss: 3.7165e-04\n",
      "Epoch 108/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7227e-04\n",
      "Epoch 109/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7360e-04\n",
      "Epoch 110/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7209e-04\n",
      "Epoch 111/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7354e-04\n",
      "Epoch 112/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7254e-04\n",
      "Epoch 113/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7328e-04\n",
      "Epoch 114/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.7332e-04\n",
      "Epoch 115/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 3.7234e-04\n",
      "Epoch 116/200\n",
      "730/730 [==============================] - 0s 79us/step - loss: 3.7252e-04\n",
      "Epoch 117/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7280e-04\n",
      "Epoch 118/200\n",
      "730/730 [==============================] - 0s 82us/step - loss: 3.7452e-04\n",
      "Epoch 119/200\n",
      "730/730 [==============================] - 0s 90us/step - loss: 3.7239e-04: 0s - loss: 3.7334e-0\n",
      "Epoch 120/200\n",
      "730/730 [==============================] - 0s 85us/step - loss: 3.7262e-04\n",
      "Epoch 121/200\n",
      "730/730 [==============================] - 0s 90us/step - loss: 3.7242e-04\n",
      "Epoch 122/200\n",
      "730/730 [==============================] - 0s 89us/step - loss: 3.7191e-04\n",
      "Epoch 123/200\n",
      "730/730 [==============================] - 0s 89us/step - loss: 3.7389e-04\n",
      "Epoch 124/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.7356e-04\n",
      "Epoch 125/200\n",
      "730/730 [==============================] - 0s 77us/step - loss: 3.7361e-04\n",
      "Epoch 126/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 3.7521e-04\n",
      "Epoch 127/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 3.7327e-04\n",
      "Epoch 128/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 3.7298e-04\n",
      "Epoch 129/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7185e-04\n",
      "Epoch 130/200\n",
      "730/730 [==============================] - 0s 77us/step - loss: 3.7282e-04\n",
      "Epoch 131/200\n",
      "730/730 [==============================] - 0s 81us/step - loss: 3.7163e-04\n",
      "Epoch 132/200\n",
      "730/730 [==============================] - 0s 85us/step - loss: 3.7180e-04\n",
      "Epoch 133/200\n",
      "730/730 [==============================] - 0s 81us/step - loss: 3.7352e-04\n",
      "Epoch 134/200\n",
      "730/730 [==============================] - 0s 54us/step - loss: 3.7172e-04\n",
      "Epoch 135/200\n",
      "730/730 [==============================] - 0s 106us/step - loss: 3.7707e-04\n",
      "Epoch 136/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7306e-04\n",
      "Epoch 137/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7299e-04\n",
      "Epoch 138/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 3.7195e-04\n",
      "Epoch 139/200\n",
      "730/730 [==============================] - 0s 79us/step - loss: 3.7221e-04\n",
      "Epoch 140/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7240e-04\n",
      "Epoch 141/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7306e-04\n",
      "Epoch 142/200\n",
      "730/730 [==============================] - 0s 78us/step - loss: 3.7274e-04\n",
      "Epoch 143/200\n",
      "730/730 [==============================] - ETA: 0s - loss: 3.7028e-0 - 0s 82us/step - loss: 3.7170e-04\n",
      "Epoch 144/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 3.7230e-04\n",
      "Epoch 145/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 3.7450e-04\n",
      "Epoch 146/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7146e-04\n",
      "Epoch 147/200\n",
      "730/730 [==============================] - 0s 78us/step - loss: 3.7204e-04\n",
      "Epoch 148/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7200e-04\n",
      "Epoch 149/200\n",
      "730/730 [==============================] - 0s 90us/step - loss: 3.7388e-04\n",
      "Epoch 150/200\n",
      "730/730 [==============================] - 0s 90us/step - loss: 3.7263e-04\n",
      "Epoch 151/200\n",
      "730/730 [==============================] - 0s 89us/step - loss: 3.7363e-04\n",
      "Epoch 152/200\n",
      "730/730 [==============================] - 0s 89us/step - loss: 3.7280e-04\n",
      "Epoch 153/200\n",
      "730/730 [==============================] - 0s 93us/step - loss: 3.7169e-04\n",
      "Epoch 154/200\n",
      "730/730 [==============================] - 0s 105us/step - loss: 3.7201e-04\n",
      "Epoch 155/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7285e-04\n",
      "Epoch 156/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7316e-04\n",
      "Epoch 157/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7226e-04\n",
      "Epoch 158/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7612e-04\n",
      "Epoch 159/200\n",
      "730/730 [==============================] - 0s 73us/step - loss: 3.7460e-04\n",
      "Epoch 160/200\n",
      "730/730 [==============================] - 0s 81us/step - loss: 3.7506e-04\n",
      "Epoch 161/200\n",
      "730/730 [==============================] - 0s 72us/step - loss: 3.7201e-04\n",
      "Epoch 162/200\n",
      "730/730 [==============================] - 0s 79us/step - loss: 3.7137e-04\n",
      "Epoch 163/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7600e-04\n",
      "Epoch 164/200\n",
      "730/730 [==============================] - 0s 82us/step - loss: 3.7500e-04\n",
      "Epoch 165/200\n",
      "730/730 [==============================] - 0s 65us/step - loss: 3.7256e-04\n",
      "Epoch 166/200\n",
      "730/730 [==============================] - 0s 87us/step - loss: 3.7260e-04\n",
      "Epoch 167/200\n",
      "730/730 [==============================] - 0s 69us/step - loss: 3.7716e-04\n",
      "Epoch 168/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7166e-04\n",
      "Epoch 169/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7204e-04\n",
      "Epoch 170/200\n",
      "730/730 [==============================] - 0s 63us/step - loss: 3.7212e-04\n",
      "Epoch 171/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7231e-04\n",
      "Epoch 172/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 3.7740e-04\n",
      "Epoch 173/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.8017e-04\n",
      "Epoch 174/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 3.7169e-04\n",
      "Epoch 175/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7578e-04\n",
      "Epoch 176/200\n",
      "730/730 [==============================] - 0s 66us/step - loss: 3.7525e-04\n",
      "Epoch 177/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7696e-04\n",
      "Epoch 178/200\n",
      "730/730 [==============================] - 0s 55us/step - loss: 3.7180e-04\n",
      "Epoch 179/200\n",
      "730/730 [==============================] - 0s 75us/step - loss: 3.7193e-04\n",
      "Epoch 180/200\n",
      "730/730 [==============================] - 0s 62us/step - loss: 3.7118e-04\n",
      "Epoch 181/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7290e-04\n",
      "Epoch 182/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7371e-04\n",
      "Epoch 183/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7204e-04\n",
      "Epoch 184/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7600e-04\n",
      "Epoch 185/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.8045e-04\n",
      "Epoch 186/200\n",
      "730/730 [==============================] - 0s 71us/step - loss: 3.7529e-04\n",
      "Epoch 187/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "730/730 [==============================] - 0s 67us/step - loss: 3.7241e-04\n",
      "Epoch 188/200\n",
      "730/730 [==============================] - 0s 69us/step - loss: 3.7395e-04\n",
      "Epoch 189/200\n",
      "730/730 [==============================] - 0s 72us/step - loss: 3.7198e-04\n",
      "Epoch 190/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7161e-04\n",
      "Epoch 191/200\n",
      "730/730 [==============================] - 0s 74us/step - loss: 3.7601e-04\n",
      "Epoch 192/200\n",
      "730/730 [==============================] - 0s 72us/step - loss: 3.7341e-04\n",
      "Epoch 193/200\n",
      "730/730 [==============================] - 0s 69us/step - loss: 3.7318e-04\n",
      "Epoch 194/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7185e-04\n",
      "Epoch 195/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 3.7323e-04\n",
      "Epoch 196/200\n",
      "730/730 [==============================] - 0s 70us/step - loss: 3.7219e-04\n",
      "Epoch 197/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.8251e-04\n",
      "Epoch 198/200\n",
      "730/730 [==============================] - 0s 68us/step - loss: 3.7292e-04\n",
      "Epoch 199/200\n",
      "730/730 [==============================] - 0s 67us/step - loss: 3.7347e-04\n",
      "Epoch 200/200\n",
      "730/730 [==============================] - 0s 64us/step - loss: 3.7344e-04\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x2aa887cacf8>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Fitting the RNN to the Trainign set\n",
    "regressor.fit(X_train, y_train, batch_size = 32, epochs = 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(730, 1)\n"
     ]
    },
    {
     "data": {
      "image/png": "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ooWFhQFmeoply5YxYMAAysrKePDBB3nsscfYuXMnL730EgC9e/emZ8+eh/zepDImhBDC14cfwi23wPffH97rBgSYv3fuPLzXFUeEc889l5UrV/LRRx/x8ccfM2jQIKZPn87kyZNZsmQJK1euJDExkbKyMi688ELOOuss3nvvPS6//HIAJkyYwKpVq9i6dWuTc2dnZ7vDmLe4uDhuu+029+OhQ4dy3nnnsXz5cl5//XUqKipITEw85PcmYUwIIYSvykrzt91+2K/rIJSK7ILDe11xxMjNzeXVV1/l5JNPJjIykptvvpnc3FxGjRrFokWLaGhoICoqii+++AIwFTLXSMiAgADuvPNO93QYTqcTgLy8PFasWOG3/9fgwYMJDw93P1dKMXfuXMaMGcMll1zSau9LmimFEEL4ci3jUlZ2eK9bUcExbGTHkkzab/pN0VHV1NTw8MMP069fPxYtWuTuuH/vvfdy3XXX8fTTT9PbmhYlIiKCq666ioaGBq644gq01oSFhXHNNdf4nK++vp7p06fz+OOPu0ddlvn5vXctbVRXV8fUqVO566672L59O3fddVervDfVnjPOHqohQ4bodevWtfdtCCHE0eXpp+GOO+Bf/4IpU9r+evX1UFICl16K+t+nABzBX01HrU2bNtG/f//2vo12YbfbiY6OpqGhAYAAV5P6Pvj7vJRS32qthzTeV5ophRBC+KqqQgPafpgqY/ffD0lJ8NNP7k3FxYfn0kK0RHR0NGBCWEuC2IGSMCaEEMJXVRV/4WFOffLctr+W1vDUU+ZxXp5782+/tf2lhegoJIwJIYTwVV3NL2Tx096Etr/Whg2ePmpeftsq7ZSi85AwJoQQwldVFQ7CsNeEYA04azvz50NgIEye7NNpf9uWuja+sDjS1dXVuUdEAtTX1+N0OikvL2/2mG3btlFSUuJzjEt79qGXMCaEEMKXFcac2sY+vtdax+LFcPrpbEwbz48c595cki9hTPhauXIl48eP59xzzyUtLY1XXnmF888/n/j4eCZOnMjEiRNZtWoVp59+OsuXL+eiiy7iqquuYvLkyWzYsAGAV1991f0Y4Oabb2b58uUALFy4kGnTpvm99rhx49yPr7zySnbt2tWq703CmBBCCF9WGAMzyLFN7dlDXa9+DHjqGk7gB/fmsuKGNr6wONKMHj2au+++m6ysLObMmcMN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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding:utf-8\n",
    "import matplotlib as mlp\n",
    "font2 = {'family' : 'SimHei',\n",
    "'weight' : 'normal',\n",
    "'size'   : 20,\n",
    "}\n",
    "mlp.rcParams['font.family'] = 'SimHei'\n",
    "mlp.rcParams['axes.unicode_minus'] = False\n",
    "# Part 3 - Making the predictions and visualising the results based on the training data\n",
    "\n",
    "# Get the real stock price 2016 - 2018\n",
    "# Importing the training set\n",
    "real_stock_price = pd.read_csv(\"zgpa_2016-18.csv\")\n",
    "real_stock_price_train = real_stock_price.iloc[:,1:2].values\n",
    "# Getting the predicted stock price of 2016 - 2018\n",
    "predicted_stock_price_train = regressor.predict(X_train)\n",
    "print(predicted_stock_price_train.shape)\n",
    "predicted_stock_price_train = sc.inverse_transform(predicted_stock_price_train)\n",
    "# visualising the results\n",
    "fig = plt.figure(figsize=(10,5))\n",
    "plt.plot(real_stock_price_train[1:m], color = 'red', label = '实际价格')\n",
    "plt.plot(predicted_stock_price_train, color = 'blue', label = '预测价格')\n",
    "plt.title('中国平安股票价格预测(训练数据)')\n",
    "plt.xlabel('时间',font2)\n",
    "plt.ylabel('股价',font2)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAFTCAYAAAB1WgtNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydd3xV5f3H38/Nnjd7k4S9lyxFURS1btGfirPYOurCuqgUbatFq9YOrQO11VKrrSA4wFmqIliWyJA9E7L3zc2e9/n98ZwkN4sECYQk3/frxYt7z3nOc55zcnPuJ9+ptNYIgiAIgiAI3YOtuxcgCIIgCILQlxExJgiCIAiC0I2IGBMEQRAEQehGRIwJgiAIgiB0IyLGBEEQBEEQuhERY4IgCCcpSinV3Ws4VnrDNQjC8cazuxcgCMKxoZT6O/C91vrPXTCXB4DWur6d/Z6AS2vtamf/C8BTWuusLlhLEPAoUHukYYA38DuttcM6zg68D1ygta5RSkUCzwGztdZ1bZznDiBaa/249f5eoFxr/Xon1ugN1LvfL2tbrdZaK6Wmaa3XdDDHfOD3LdemlJoFRAN/UUpdDIRrrd/saE1uxw8EsrTWlW7bfgKs0VofaDF2NvAJ8Azm3sUAnwM/AfZqrd9pY/7zgQKt9eYOljJHKZWrtV7c2bULQl9DxJgg9HzqrH+tUEptBuqB6naO9QHQWk+y3l8ELFBKNcwXg7GgZ9EkfG4EtrUz317gAeChdtbzMPBza76hwGjgNuAmIA8YprUOtIZXAUtpEmMvAU8CA4HTgaetNfkAFW6nmQlka61rrPf3AhcCU4D/tbGsKprfn9nAP5RSZ1jv07XWh5VScRjBUgIEAWXA18BZSql+QI11XT7AtUqpLOARpVQF8Blwq7VOf+BN4GVAA3OAp1rcp0TgZ8AF1qY1wCdKqSCt9UtKqZ9Z298Cpmitv1RKfQ7corXOsPa9DiwEFltzKmA+0HBd7jiBP1vr08A91txnWOduizOAPcBmpdRuoLDF/jit9QDgVeBzpdR6rfXhduYShD6NiDFB6PnU0o4Ys/bNArKBGu1W5Vkp5QPEAv9q2Ka1XqGUsgEfa63rlFLzgECt9aNKKX+MkNrhNscdwG+BNPeTKqU2WS9jgZe01r9zW89rWuvHlFKrMAImEviV1vofSqkSt7XUKqXGYgRECTAA+APgixFDw4Bg4HGt9Xq308/BCDCUUiOBi4GJwFKl1DXuViHrHijrtTdG5CUDk61/MzBC8bDWOkspdRYQjxE6v9Bar7OOfQH4VGv9SYv7cBFwNjAcI77eA67EiNx/YsRSvfvPxeK3wEMNglJrXWJZxx5wG+MHhAC/Br7E7XOglBoGeADvWsLtNoxItAPLLGHmD1yntd5jzbfVWutpwFpgpHUPNrjdnzqMII+yjg9WSsUCVVrrZiKv4TOgta5WSs0FHgduRhCEVogYE4QehlLqb8B5QL61KRG4WCl1i/U+Dnhda/0rmqxKbwNxSqkEjPWjACNqrgJauhyvt+a/p8X2h4GxLVyYNcASrfU9SqkBwK+AnzaIC6XUoxjLXAMa+LFldRoLnAlcBjxm7S9QSu0BHtZaf4ixyr1pibfPgDuAURgX5D1KqScwoqPh3swCJgBZSqkk4B2MteiQUuo2jIXmYa31UssNus66X5XAeIzgywL+BOQC72ut/+u2/gSMpehPWut1SqlxGJE1EJhquRw3aa3vU0rFAOO01p8ppYZbx+/ECEpoR0RbAjGpwf2nlBoEnGXdx+fcjvVtcW/deQRjnTwfuERrPVEp9TywUmv9URvjp1v3dQbmZ5oK3I75bHxtXYvLmk9hxOIw4FSgP+ChlPrGmisYI559GibXWn+rlBqglPLRWrdnpRWEPouIMUHoedRg4rJeAVBKvQjscHv/GK0F1nWYL+5fY1xLSwAvjOWqJbcAu5RSKxs2KKVOtbZPaDH2PeBj6/W9wLYWVp5/thjvQZO4WgXsw1hLipRSvsAIjKWoQUQWA7crpS6x3i91W1OD9e131vs4TMzTXmAwxj32GMYqCEaAzgUeV0o5tdYrgVFKqe8xbsSXgHOB/wDvYtyQ97qdz9OaeyYQYW32Bg5ZxyVgxOMz1j4/4PdKqWS366/CCBU/2mcAsNvtvSfGEng3sBFwWOdts5edUmoaRrwdAC4HXlBKfQsMAcYppZ7UWo91G28DNmMsYe9jxGggEAq8p7W+RSn1NPCdmxXtautzthfzM5zRYBlTSu1uaSWz2IkRbnva2CcIfRoRY4LQ82gzeL6DMY9jrB8NlrF7MV+ij7U8UGtdppS6FvOl2WDRqQVu1FrnNoyzgv1XAeXWF/o44Hul1FXWkACgHPBTSt2ptd6ImxXLIhhYgRFMLiAc47r7hbV/NcYCVEPbeNMUBxaNsTpdghEi51mvb8DEl12IsSKObUhAsCxbAzGxci6t9Tyl1HRrLSHAKUqpPVrrYuAcjEUoHihVSv3Veg9GRD6JceNq6z6mKKVmWOMbxEk97YgoN0Ixggtrnj3AHqXUTLf7EIgRdW3xHcaqdSbwrtb670opL8CutX7Wsjy6E4ZxOV4PvAL8HhPP97zbOhIxAh5ojD+LBn4KPAsEuonjROu1Apa5uagd1rUJgtACEWOC0POwAb9USt1qvU8ELnV7H4cRNI1oredDo9VsDyY2qKWL7xzgRZoHwzcE8F9gjbFhhMCdWusvMAIMpdRzmC/+P1nvLwHu11rPaLF2H+BnlrAYZK3ldeDfWuuvlVIbcItha1jaEe5F4z6t9RZgi3VurbU+qJTyw1h6wLgEa1pkgj5snT8H8FRKfYcRmJcApRhr1Cal1H2We+8/lpVoPSaWbTMwCSM8D7VcnNY638pgtGGEaQNHevYWYkTpkRgKLGtrh9a6QimVgomdu8wSYguAdKXU5RixtBYI1lqPwnwG7gTux8SU/QsjgM/CJDIkYlyYOwGUUoOtc/vTFOv3E631RGv/JsstaqO5+I6gdZC/IAiIGBOEnogXHbspvdzGK6WUt1t2IcCnQD+MCAFAa/0lxsLjfmBjAH97i7G+rH+MCQy/HGOpegIT39WSCGC+Za1ZZW1biHHnaaBEa73Vmvc6TNyae2kLT4ywcb+WO5RSS7XWf2zjfOGYwPS21n0qRixsxojOZ4FMjIVrijUsERMT9knL47XWk5VSDeNGAgfd1thwjtMw9+ZujPjMxFiuDmAElfvPqYFDNFkkWzJEKVWOCax/iDbcnZb4+hQowlgWP8S4PuO01vsty9j/YYlurXWuUmo8RmBOs+7FM5aQ/AfG1ZziFuuVirGIXQJUK6UCMdbR1zFWxqHWz7ZCa32R29JGAintXJcg9GlEjAlCz+NnHNnV9Vu31wrjmlyilGr4Mj3X+t/HGntMRTm11mnK1PKajLGuvE+TMGnJSODfLY7fppTKAJZjrDEN2/8N/FspFQycZWV63owJir9PKTUJ2Km1drfktWQ6xt3WFt9jrEcXWuerVCab8yOt9a3QKGyrdDt11TBB/iswGauLMIkA7vXJHgQWWFa/yzCZqL/GxPD50bY1rVYptVspdYbW+hu3XTaM5fKPgFNr7VSmplpbx9+AyXCtxAix84BfWfcMTNzbOcDV1vsITNbkv63x/7Tc0J8Cf8ctds6K59vkFsc3GdgCTG2wjln3bpPb67OA7W6xgIIguCEV+AWhh6G1drUIkrfh9rts7W8QD16YOlmTtNZntPg3CdjOkf8oazZ3W1hZiedjyieMwgSNzwdeVEqttdyfKKUiMGJsi1IqFFPSot4SCGcC3wLPKaVmWEIApdSPgG+AU604JXfheBOwTyl1txVc34CXOVQ9AGS61d1qJjq11hXuMXBuYy5RSn1jZQf+tOVxGBdeQ1xYqvU+EhPw/z5W8L1S6jxMxui7SqmhwDUYIVYF/FZrvVJrnUnb1rHfAE9Z97bB2jUMk015M01JAiU0iT9vwEuZzMeLMRm072Pqm/0GY8nyxsTDvQKEK6Vusq4jj6Zki+cwQv1KTOHX32DqpV3RYo02jOv3QowgbRNLTP/OmkcQhDYQy5gg9HwCMF+ybeGJEQNHKvp6JLHlc4S5UUr9ASMOVmICvG9zK33xrlLqx8DDSqk1GBfYIkyB1T0YK9H9wBXADVrrjZbl6x/AjUqp9RgB8VOt9SZrrgVYlj+t9b1KqYUY65b7NXhh3GXXApe2uBYfWuNF07PQk9aWsUaxpJR6H+Nu/INSKgT4qzXnZVprh7X+D5SpCZYH/FJr7VJKvYypS+ZUpsL/41ZM1XZgV8sFWa7DxzAWtNcsa9edGOthmtb6Y2tcMU0i6kOM69GFSRS4UWudYZ3vWYz1awuwSGutlVJ3AxGW8F2MKfx6uxVrdyYmGeIe6+fyOfC8MoVbsy0X8mCM4LsVE3vnXt4CTL02rGv4dRvCVxAEC6Vb1RoUBKG3YAWwV+nj9Iuu3Fr/HOVxyhIE0UCxe+0ppZRXW+4sy5oWorXu0rgjZYrZ2qwsUk/Ao7O1sJRSw7XWu1tsi9Ra57fY1t41+XfgZu1SlFKeuo2WUF00t592a70kCELnETEmCIIgCILQjUjMmCAIgiAIQjciYkwQBEEQBKEb6dEB/BERETo5Obm7lyEIgiAIgtAh3333XYHWOrLl9h4txpKTk9m0aVPHAwVBEARBELoZpdThtraLm1IQBEEQBKEbETEmCIIgCILQjYgYEwRBEARB6EZ6dMyYIAiCIAgnhtraWjIyMqiqqurupZz0+Pr6kpCQgJdXW93OWiNiTBAEQRCEDsnIyCAoKIjk5GRMq1ihLbTWFBYWkpGRQf/+/Tt1jLgpBUEQBEHokKqqKsLDw0WIdYBSivDw8KOyIIoYEwRBEAShU4gQ6xxHe59EjAmCIAiC0OPIysqipqbmmOaoq6trfN2dvbpFjAmCIAiC0ON45JFHWLp0abNt33//PTExMZx66qlMnTqVf/7zn5x99tmce+65nHvuuVx22WXNxt9zzz2sWrUKgKVLlzJnzpw2zzVjxozG17NnzyY9Pb1Lr0UC+AVB6J3s3QtDh3b3KgRB6EKGDh1Kv379AKisrGTXrl288cYbAKSmprJixQouuOACZs2axbp167juuuu44YYbsNmM7cndklZRUcHmzZt5+eWXqa2tZeHChURHR/PVV19x9tlnA8Za5nK58PPzo66ujoyMDFavXs2TTz5JUVER48aNY/78+cd8XSLGBEHofWzZAqecAl9/DWee2d2rEQShi/D09GTJkiXs27ePU089lSVLljB8+HBGjx7NKaec0hir9dVXX3HBBRcANAqxhuPr6urw9PTkxRdfZMSIEdhsNubMmcNdd93FpZdeyhVXXEF+fj7XXHMNGzdu5Oc//zk7duzgyiuvxNPTk2HDhvH0009z//33M3PmzK65ri6ZRRAE4WTisNX+bdMmEWOCcDy47z7YurVr5xw3Dp577ohDPv30U7Kzs1m2bBkfffQRJSUlxMTEALB582b27NkDwDfffMPtt9/O2WefjYeHB9u2bWPUqFHYbDZuvfVWpkyZwttvv8348eOZPXs2ycnJTJ8+HR8fH+bNm8dLL71EXV0d119/PQ899BAPPvggc+bMITIykrCwMM4++2wuvPBCRowY0SWXLjFjgiD0PhwO8//Ond27DkEQupTy8nKeeOIJpk2bxoIFC8jOzmbIkCGtxl1zzTWsXr2alStX8tVXXzFhwgQ+/fRTPv30U2666SYcDgdPP/00AE8//TSDBw9mxYoVAMybN4/Fixdz3XXXAfDee+8xYMAAli9fztq1a5k/fz5z586lqKiIm266iQ0bNhzzdYllTBCE3kdRkflfxJggHB86sGAdD1asWMHvf/97AgICePHFF3n55Zf59ttvufnmmwEj1H73u98BcPnll/Pzn/+czMxMYmNjAfj4449ZuXIlf/vb35gyZQoFBQUsXryY2NhYKioqGmPR/P39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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10,5))\n",
    "plt.plot(real_stock_price_train[300:m], color = 'red', label = '实际价格')\n",
    "plt.plot(predicted_stock_price_train[300:m], color = 'blue', label = '预测价格')\n",
    "plt.title('中国平安股票价格预测(训练数据)')\n",
    "plt.xlabel('时间',font2)\n",
    "plt.ylabel('股价',font2)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# visualising the results\n",
    "plt.plot(real_stock_price_train[1:731], color = 'red', label = 'Real Stock Price')\n",
    "plt.plot(predicted_stock_price_train+10, color = 'blue', label = 'Predicted Stock Price+10')\n",
    "plt.title('Stock Price Prediction')\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('Price')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = np.concatenate((real_stock_price_train[1:1258],predicted_stock_price_train),axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>real_price</th>\n",
       "      <th>predicted_price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>28.41</td>\n",
       "      <td>30.535713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>29.03</td>\n",
       "      <td>28.289095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>28.73</td>\n",
       "      <td>28.930899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>28.73</td>\n",
       "      <td>28.620024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>27.73</td>\n",
       "      <td>28.620024</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   real_price  predicted_price\n",
       "0       28.41        30.535713\n",
       "1       29.03        28.289095\n",
       "2       28.73        28.930899\n",
       "3       28.73        28.620024\n",
       "4       27.73        28.620024"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = pd.DataFrame(result,columns=['real_price','predicted_price'])\n",
    "result.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "result.to_csv('result.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>volume</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2019-01-02</td>\n",
       "      <td>54.19</td>\n",
       "      <td>54.33</td>\n",
       "      <td>53.09</td>\n",
       "      <td>53.33</td>\n",
       "      <td>82554240</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2019-01-03</td>\n",
       "      <td>53.30</td>\n",
       "      <td>54.48</td>\n",
       "      <td>53.21</td>\n",
       "      <td>53.83</td>\n",
       "      <td>69271120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2019-01-04</td>\n",
       "      <td>53.43</td>\n",
       "      <td>55.15</td>\n",
       "      <td>53.38</td>\n",
       "      <td>54.74</td>\n",
       "      <td>112985584</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2019-01-07</td>\n",
       "      <td>55.24</td>\n",
       "      <td>55.32</td>\n",
       "      <td>54.05</td>\n",
       "      <td>54.45</td>\n",
       "      <td>76593008</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2019-01-08</td>\n",
       "      <td>54.20</td>\n",
       "      <td>54.24</td>\n",
       "      <td>53.35</td>\n",
       "      <td>53.95</td>\n",
       "      <td>55992092</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         date   open   high    low  close     volume\n",
       "0  2019-01-02  54.19  54.33  53.09  53.33   82554240\n",
       "1  2019-01-03  53.30  54.48  53.21  53.83   69271120\n",
       "2  2019-01-04  53.43  55.15  53.38  54.74  112985584\n",
       "3  2019-01-07  55.24  55.32  54.05  54.45   76593008\n",
       "4  2019-01-08  54.20  54.24  53.35  53.95   55992092"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Part 4 - Making the predictions and visualising the results based on the test data\n",
    "%matplotlib inline\n",
    "# Getting the real stock price of 201\n",
    "test_set = pd.read_csv(\"zgpa_2019.csv\")\n",
    "test_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(182, 1)\n"
     ]
    }
   ],
   "source": [
    "real_stock_price = test_set.loc[:,['open']].values\n",
    "print(real_stock_price.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Getting the predicted stock price of 2019\n",
    "m_test = real_stock_price.shape[0]\n",
    "X_test_ori = real_stock_price[0:m_test-1]\n",
    "y_test_ori = real_stock_price[1:m]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(181, 1) (181, 1)\n"
     ]
    }
   ],
   "source": [
    "print(X_test_ori.shape,y_test_ori.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = sc.transform(X_test_ori)\n",
    "X_test = np.reshape(X_test, (m_test-1, 1, 1))\n",
    "predicted_stock_price = regressor.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "predicted_stock_price = sc.inverse_transform(predicted_stock_price)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualising the results\n",
    "plt.plot(y_test_ori, color = 'red', label = '实际价格')\n",
    "plt.plot(predicted_stock_price, color = 'blue', label = '预测价格')\n",
    "plt.title('中国平安股票价格预测（测试数据）')\n",
    "plt.xlabel('时间')\n",
    "plt.ylabel('股价')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Part 5 - Evaluating the RNN\n",
    "# Evaluate of the RNN - learning to evaluate regression models\n",
    "# Root Mean Square Error (RMSE)\n",
    "\n",
    "import math\n",
    "from sklearn.metrics import mean_squared_error\n",
    "rmse = math.sqrt(mean_squared_error(y_test_ori, predicted_stock_price))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rmse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.models import load_model\n",
    "regressor.save('rnn_zgpa_stock_predict.h5')  # creates a HDF5 file 'my_model.h5'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = np.concatenate((y_test_ori,predicted_stock_price),axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "result = pd.DataFrame(result,columns=['real_price','predicted_price'])\n",
    "result.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "result.to_csv('zgpa_predicted.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 股价预测对比\n",
    "\n",
    "![result_comp](images/result_comp.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 输出层激活函数未sigmoid/tanh的预测结果\n",
    "\n",
    "![code_update](images/code_update.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 输出层激活函数未sigmoid/tanh的预测结果\n",
    "\n",
    "![sigmoid_output](images/sigmoid_output.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**预测准确率的局限性:** 无法真实反映模型针对各个分类的预测准确度\n",
    "\n",
    "任务：计算并对比预测模型预测准确率、空准确率\n",
    "\n",
    "空准确率：当模型总是预测比例较高的类别，其预测准确率的数值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**结论:**\n",
    "\n",
    "  分类准确率可以方便的用于衡量模型的整体预测效果，但无法反应细节信息，具体表现在：\n",
    "- 没有体现数据的**实际分布情况**\n",
    "- 没有体现模型**错误预测的类型**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵\n",
    "\n",
    "又称为误差矩阵，用于衡量分类算法的准确程度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![confusion_matrix](images/06_confusion_matrix.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**名词解释**\n",
    "\n",
    "- **True Positives (TP):** 预测准确、实际为正样本的数量（实际为1，预测为1）\n",
    "- **True Negatives (TN):** 预测准确、实际为负样本的数量（实际为0，预测为0）\n",
    "- **False Positives (FP):** 预测错误、实际为负样本的数量（实际为0，预测为1）\n",
    "- **False Negatives (FN):** 预测错误、实际为正样本的数量（实际为1，预测为0）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Small confusion matrix](images/09_confusion_matrix_1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Large confusion matrix](images/09_confusion_matrix_2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵指标"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**准确率:** 整体样本中，预测正确样本数的比例\n",
    "- Accuracy = (TP + TN)/(TP + TN + FP + FN)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**精确率:** 预测结果为正的样本中，预测正确的比例\n",
    "- Precision = TP/(TP + FP)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**F1分数:** 综合Precision和Recall的一个判断指标\n",
    "- F1 Score = 2*Precision X Recall/(Precision + Recall)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![confusion matrix_metrics](images/09_confusion_matrix_3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**结论:**\n",
    "\n",
    "- 分类任务中，相比单一的预测准确率，混淆矩阵提供了**更全面的模型评估信息**\n",
    "- 通过混淆矩阵，我们可以计算出**多样的模型表现衡量指标**，从而更好地选择模型\n",
    "\n",
    "**哪个衡量指标更关键?**\n",
    "\n",
    "- 衡量指标的选择取决于**应用场景**\n",
    "- **垃圾邮件检测** (正样本为 \"垃圾邮件\"): 希望普通邮件（负样本）不要被判断为垃圾邮件（正样本），需要关注**精确率**，希望判断为垃圾邮件的样本都是判断正确的；还需要关注**召回率**，希望所有的垃圾邮件尽可能被判断出来)\n",
    "- **异常交易检测** (正样本为 \"异常交易\"): 希望所有的异常交易都被检测到，即判断为正常的交易中尽可能不存在异常交易，需要关注**特异度**"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
